package lx.springBoot.dao.impl;

import common.Page;
import lx.springBoot.dao.BaseDao;
import org.mybatis.spring.SqlSessionTemplate;

import java.util.List;

/**
 * Created by lx on 2017/7/4.
 * 通用dao层   为以后使用缓存
 */
public abstract class BaseImpl<T> implements BaseDao<T>{

    public abstract String getNameSpace();
    public abstract SqlSessionTemplate getSqlSessionTemplate();

    /**
     * 获取命名空间
     *
     * @param statement
     * @return
     */
    public String ns(String statement) {
        return getNameSpace() + statement;
    }

    @Override
    public T findById(Object id) throws Exception {
        return getSqlSessionTemplate().selectOne(ns("findById"),id);
    }

    @Override
    public <T1> List<T1> findByPage(Page page) throws Exception {
        return getSqlSessionTemplate().selectList(ns("findByPage"),page);
    }

    @Override
    public Long insert(T t) throws Exception {
        return Long.valueOf(getSqlSessionTemplate().insert(ns("insert"),t));
    }
}
